#include <stdio.h>

// int main()
// {
//     int a = 10;
//     a = 20;
//     printf("a = %d\n", a);

//     // b是常量，不能被修改
//     const int b = 10;
//     //  b = 20;
//     //  printf("b = %d\n", b);
//     int *p = &b;
//     *p = 20; // 修改指针指向的值
//     printf("b = %d\n", b);

//     return 0;
// }

static int y = 10; // 修饰全局变量 修饰全局变量 作用域：仅限于本文件有效
static void xxx()  // 静态函数
{
    static int x = 10; // 静态变量
    return &x;
}

int main()
{
    // int a = 10;   //  === auto singed int a = 10;
    int x = 10;
    int y = 20;
    printf("%d %p\n", x, &x);
    // const int *p = &x; // p是指针常量，不能被修改  等价 int const *p = &x;
    // *p = 200;  //不可取的
    // p = &y;    //  可取的
    // printf("%d %p", *p, p);
    // 修饰的是 p这个指针指向的内存空间是一个只读变量  指针的目标元素是常量

    int *const p = &x; // p是一个常量，不能被修改
    *p = 200;          //  可取的
    printf("%d %p", *p, p);
    // 修饰的是指针 指针的值不能修改   指针指向的内存空间（目标元素）可以修改

    // const 修饰的是指针本身的 int* const p    指针指向的元素可以修改   指针的地址不能修改
    // const int *p  、 int const *p   const 修饰的是目标元素，指针指向的元素不能修改
    return 0;
}